package com.naiterui.ehp.ps.sms.vo;

import org.apache.commons.lang3.builder.ToStringBuilder;

import lombok.Data;

/**
 * 华为短信平台状态回调
 * https://support.huaweicloud.com/api-msgsms/sms_05_0003.html
 *
 * @author guoyongxiang
 * @date 2019-08-16 16:28
 * @since 1.0.0
 */
@Data
public class HuaweiStatusReportParamVO {

    /**
     * 长短信拆分后的短信序号，当total参数取值大于1时，该参数才有效。(String 1-2)
     * 当短信未拆分时该参数取值为1。
     */
    private String sequence;

    /**
     * 长短信拆分后的短信条数。(String 1-2)
     * 当短信未拆分时该参数取值为1
     */
    private String total;

    /**
     * 透传南向网元返回的状态码，取值范围请参考表5，处理方法请参考状态报告错误处理。
     * 当南向网元未返回状态码时不携带该参数。
     */
    private String orgCode;

    /**
     * 短信资源的更新时间，通常为短信平台接收短信状态报告的时间，为UTC时间，格式为：yyyy-MM-dd'T'HH:mm:ss'Z'，该时间会通过urlencode转义为%3a。
     * 当短信平台未收到短信中心上报的状态报告时，会自行构造状态报告，该状态报告中不携带“updateTime”参数。
     */
    private String updateTime;

    /**
     * 短信状态报告来源：
     * 1：短信平台自行产生的状态报告。
     * 2：短信中心返回的状态报告。
     * 3：短信安全管控产生的状态报告。
     */
    private String source;

    /**
     * 发送短信成功时返回的短信唯一标识(String 1-50)
     */
    private String smsMsgId;

    /**
     * 短信状态报告枚举值，常见取值请参考表4，处理方法请参考状态报告错误处理。(String 1-7)
     */
    private String status;

    /**
     * 扩展字段，由客户在发送短信的请求中携带。若客户发送短信时未携带extend参数，则状态报告中也不会携带extend参数。
     */
    private String extend;

    /**
     * 本条状态报告对应的短信的接收方号码，仅当状态报告中携带了extend参数时才会同时携带该参数。
     */
    private String to;


    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this);
    }
}
